//
//  NSDate+Extension.swift
//  CBWWeiBo
//
//  Created by 陈博文 on 16/1/13.
//  Copyright © 2016年 陈博文. All rights reserved.
//

import UIKit

extension NSDate{
    /// 根据指定字符串生成NSDate
    class func dateFromStr(str: String) -> NSDate? {
        // 1.将字符串转换为NSDate
        // 1.1创建日期格式化对象
        let formatter = NSDateFormatter()
        // 1.2告诉日期格式化对象字符串的格式
        formatter.dateFormat = "EEE MM dd HH:mm:ss Z yyyy"
        // 1.3设置归属地
        formatter.locale = NSLocale(localeIdentifier: "en")
        // 1.4生成NSDate
        return formatter.dateFromString(str)
    }
    
    /// 生成当前NSDate对应的字符串
    func descString() -> String
    {
        
        // 1.1创建日期格式化对象
        let formatter = NSDateFormatter()
        formatter.locale = NSLocale(localeIdentifier: "en")
        
        // 3.创建一个日历类
        let calendar = NSCalendar.currentCalendar()
        if calendar.isDateInToday(self)
        {
            // 3.1判断是否是当天
            // 2.利用当前时间的NSDate和发布微博的NSDate进行比较
            let interval = Int(NSDate().timeIntervalSinceDate(self))
            
            // 2.1判断是否是一分钟以内
            if interval < 60
            {
                return "刚刚"
            }else if interval < 60 * 60
            {
                // 2.2判断是否是一小时以内
                return "\(interval / 60)分钟前"
            }else if interval < 60 * 60 * 24
            {
                // 2.3判断是否是当天
                return "\(interval / (60 * 60))小时前"
            }
            
        }else if calendar.isDateInYesterday(self)
        {
            // 3.2判断是否是昨天
            formatter.dateFormat = "昨天 HH:mm"
            
        }else
        {
            // 3.3处理其它天
            let comps = calendar.components(NSCalendarUnit.Year, fromDate: self, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))
            
            if comps.year == 0
            {
                // 3.3.1判断是否是一年以内
                formatter.dateFormat = "MM-dd HH:mm"
            }else
            {
                // 3.3.2判断是否是一年以上
                formatter.dateFormat = "yyyy-MM-dd HH:mm"
            }
        }
        return formatter.stringFromDate(self)
    }

}